"""
通过某个关键字排序一个字典列表

问题：
    你有一个字典列表，你想根据某个或某几个字典字段来排序这个列表。
解决方案：
    通过使用 operator 模块的 itemgetter 函数，可以非常容易的排序这样的数据结构
"""

from operator import itemgetter


def use_sort():
    user_list = [
        {"name": "Kevin", "age": 18, "uid": 1000},
        {"name": "KK", "age": 28, "uid": 1010},
        {"name": "葛小伦", "age": 10, "uid": 1001},
        {"name": "天使彦", "age": 10, "uid": 1003},
    ]

    # 根据name排序
    user_list_by_age = sorted(user_list, key=itemgetter("name"))
    for user in user_list_by_age:
        print(user)
    # 输出结果：
    """
    {'name': 'KK', 'age': 28, 'uid': 1010}
    {'name': 'Kevin', 'age': 18, 'uid': 1000}
    {'name': '天使彦', 'age': 10, 'uid': 1003}
    {'name': '葛小伦', 'age': 10, 'uid': 1001}
    """

    # 根据age和uid排序
    user_list_by_uid_age = sorted(user_list, key=itemgetter("age", "uid"))
    for user in user_list_by_uid_age:
        print(user)
    # 输出结果：
    """
    {'name': '葛小伦', 'age': 10, 'uid': 1001}
    {'name': '天使彦', 'age': 10, 'uid': 1003}
    {'name': 'Kevin', 'age': 18, 'uid': 1000}
    {'name': 'KK', 'age': 28, 'uid': 1010}
    """


if __name__ == '__main__':
    use_sort()
